查看原文
其他

【通杀方法】DES加密算法

电子物证 2022-10-02

The following article is from 盘古石取证 Author 技术专家 张栩图

一,了解java中的DES加密


1. 先看一段基本的DES加密代码。

algorithm:算法,如DES

key:根据算法对应的密钥

plainText:明文


// 生成Cipher对象

cipher = Cipher.getInstance(algorithm);

// 操作模式为加密(Cipher.ENCRYPT_MODE),key为密钥

cipher.init(Cipher.ENCRYPT_MODE, key);

// 得到加密后的字节数组

cipherText = cipher.doFinal(plainText.getBytes());


2. 上面简单实现了加密的过程。可以看到代码中主要的是cipher对象,并有以下调用

(1)Cipher对象需要传入一个参数algorithm。

(2)cipher对象使用需要三个参数("加密模式","密钥","向量")。

(3)cipher.doFinal()的调用要做数据转换,方法中传入的是一个byte数组。


实际上Cipher类实现了多种加密算法,在创建Cipher对象时,传入不同的参数就可以进行不同的加密算法。而这些算法不同的地方只是创建密匙的方法不同而已。


3. 创建密匙主要使用SecretKeySpec、KeyGenerator和KeyPairGenerator三个类来创建密匙。


二、解密实战


1.首先拿到DES加密样本,放入GDA反编译工具中进行查看,找到程序入口为:com.phone2.stop.activity.MainActivity。



进入j.a();方法,看到将拼接好的“h~m”字符串存入str,并放入数组f传入a.a(),返回str=h~mx。拿到DES算法加密密钥“h~mx”。




接下来在gwrxibberje.ofmvxveqv.oknctzzmzp.db.a中找到四段加密的密文,分别是

①16be6196e7e3d0253fa0c4311a7b3229

②cba18e2d797dde0e49d7bddec14256175acb86f0d9ee4a45

③16be6196e7e3d02514b53f46cac6e9f0f72927203283a7fe

④8d8ddffcdc53f5952d6f318d0398ac9feda7f36474f02f3d


使用DES在线解密工具,可以分别解密为:

① 用于发信手机号:18230324072

② 2015-10-19 23:59:00

③ 邮箱账户:18230324072@163.com

④ 密码:nhnwlbqanszlgddp






2.其实我们通过对算法主要类和方法的搜索,就可以快速定位加密的类型和位置。

搜索Cipher.getInstance,可以直接定位到设置加密算法的位置,如图。



搜索SecretKeySpec,可以直接定位到设置密钥的代码位置,如图。



三、算法通杀工具


我们可以借助调试工具来完成对加密算法的通杀,为大家介绍一款调试工具,叫做“算法助手”。打开算法助手,可以看到一共有两栏,分别为应用和日志。



在应用一栏中找到我们要调试的程序。点击进入后在算法分析一栏中,勾选摘要算法、含密钥信息摘要和加密算法三项。



点击右上角启动调试的目标程序,程序运行后返回加密算法页面,到日志一栏就可以看到抓取到算法相关数据了,进入查看详情,在解密密钥中可以看到文本内容为h~mx。并且可以看到所调用的堆栈,方便我们定位加密位置。



四、总结


掌握了以上关于DES加密算法的知识,相信大家对DES算法的定位与解密更加轻松了。通过手动分析代码,以及调试工具的辅助配合,能够最快速度解出加密的内容,后续我们也将推出更多关于安卓逆向和加密解密的内容。


来源:盘古石取证,作者:技术专家 张栩图


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存